#ifndef SQLMGR_H
#define SQLMGR_H

#include <QDebug>
#include <QSqlDatabase>
#include <QException>
#include <QSqlTableModel>
#include <QDateTime>

class SqlMgr
{
public:
    SqlMgr();
    ~SqlMgr();

    static SqlMgr * instance;

    static SqlMgr * getInstance(){
        if(nullptr == instance){
            instance = new SqlMgr;
        }
        return instance;
    }

    bool startTransaction(QSqlDatabase &db);

    void commit(QSqlDatabase &db);

    void rollback(QSqlDatabase &db);

    void init();

    void test();

    //登陆
    bool login(const QString& strUser, const QString& strPass);

    //获取所有用户
    QVector<QStringList> getUsers(const QString strCondition);

    //添加用户
    void addUser(QVector<QStringList> userList);

    //删除用户
    bool delUser(QString strId);

    //获取所有图书
    QVector<QStringList> getBooks(QString strCondition="");

    //获取一条图书记录
    QMap<QString, QString> findBook(int bookid);

    //增加图书
    bool addBook(QMap<QString, QString> & bookMap);

    //修改图书
    bool updateBook(QMap<QString, QString> & bookMap);

    //删除图书
    void delBook(QString strId);

    //图书归还
    QString returnBook(QString strUserId, QString strBookId);

    //图书借阅
    bool borrowBook(QString strUserId, QString strBookId);

    //获取借阅记录
    QVector<QStringList> getRecords(QString strCondition="");

    //清空借阅记录
    void clearRecords();

private:
    QSqlDatabase m_db;

};



#endif // SQLMGR_H
